"""
功能描述:判断用例是否有前置条件
导包
实例化方法
判断是否有前置条件
有前置条件，先跑前置条件
    通过请求头和请求参数，一下逻辑可以单独定义实例方法
    通过读取当前header，来判断是否有依赖header信息，判断来获取
    去testdase中定义testdata全局变量中执行前置用例数据
    调用runpre方法获取依赖的用例信息
无前置，直接返回
定义实例方法runpre运行前置条件，提取目标字段
准备前置用例所需要的数据
调用confighttp方法获取接口结果‘
返回目标字段的值


"""

# 导包
from 高级版接口第二周.common.log import loger
from 高级版接口第二周.common.confighttp import confighttp
import re
from jsonpath import jsonpath
class presolve():
    # 实例化方法
    def __init__(self,*testdata):
        # 判断是否有前置条件
        self.testdata=testdata

    def getpreheader(self,cur_header):
        # 有前置条件，先跑前置条件
        result =re.findall('\$\{(.*?)\}',cur_header)
        if len(result) !=0:
            goal_h=result[0]
            loger.debug(f'header/boby:中需要替换的数据为{goal_h}')
        else:
            goal_h=None

    def presolve(self):
        loger.debug('id: %s ,testdata: %s'% (id,self.testdata))
        rely =self.testdata[int(id)-1]['rely']
        caseif=self.testdata[int(id)-1]['caseid']
        cur_header =self.testdata[int(id)-1]['header']
        cur_param=self.testdata[int(id)-1]['value']
        loger.debug('rely: %s,caseid: %s,value: %s,cur_header: %s' % (rely,caseif,cur_param,cur_header))
        if rely.lower() == 'y' and id !='1' and caseif !='':
            loger.debug(f'用例有前置，开始获取前置用例的数据，万户替换当前用例，准备header和boby')
            goal_h =self.getpreheader(cur_header)
            goal_b=self.getpreheader(cur_param)

        #     通过请求头和请求参数，一下逻辑可以单独定义实例方法
        #     通过读取当前header，来判断是否有依赖header信息，判断来获取
        #     去testdase中定义testdata全局变量中执行前置用例数据
        #     调用runpre方法获取依赖的用例信息
        # 无前置，直接返回
        # 定义实例方法runpre运行前置条件，提取目标字段
        # 准备前置用例所需要的数据
        # 调用confighttp方法获取接口结果‘
        # 返回目标字段的值